package model;

import jade.util.leap.Serializable;

import java.util.ArrayList;
import java.util.List;


public class SubRota implements Serializable{
	
	
	 				
	private List<Shape> forma;					//preenchido pela busca
	private Stop stopOrigem;					//preenchido pela busca
	private Stop stopDestino;					//preenchido pela busca
	private Coordenada origem; 					// lat lon do ultimo stop (List<Stop>)
	private Coordenada destino;					// lat lon do primeiro stop (List<Stop>)
	private double distancia;					// calculado por shape_dist_traveled inicial e final
	
	/* BANCO */	
	private String viagem;						// trip_id em trips
	private String linha;						// route_id em routes
	private String descricaoLong; 				// route_long_name em routes
	private String tipo; 						// fare_id em fare_attributs
	private double tarifa; 						// price em fare_attributs
	private String cor;							//route_color em routes
	
	//private List<Stop> stops;
	//private double distAcumOrigem; 			// shape_dist_traveled do primeiro shape de shapes
	//private double distAcumDestino; 			// shape_dist_traveled do ultimo shape de shapes
	//private String descricaoStopOrigem; 		// stop_desc do primeiro stop de stops
	//private String descricaoStopDestino; 		// stop_desc do ultimo stop de stops

	
	//contrutor padrão
	public SubRota(){
//		stops = new ArrayList<Stop>();
		forma = new ArrayList<Shape>();
		origem = new Coordenada();
		destino = new Coordenada();
	}
	
	//gets e sets
	public Coordenada getOrigem() {
		return origem;
	}
	private void setOrigem() {
		this.origem.setLat(this.stopOrigem.getStop_lat());
		this.origem.setLon(this.stopOrigem.getStop_lon());
	}

	public Coordenada getDestino() {
		return destino;
	}
	private void setDestino() {
		this.destino.setLat(this.stopDestino.getStop_lat());
		this.destino.setLon(this.stopDestino.getStop_lon());
	}


	
	public double getTarifa() {
		return tarifa;
	}
	public void setTarifa(double tarifa) {
		this.tarifa = tarifa;
	}

	public String getLinha() {
		return linha;
	}
	public void setLinha(String linha) {
		this.linha = linha;
	}

	public List<Shape> getForma() {
		return forma;
	}
	public void setForma(List<Shape> forma) {
		this.forma = forma;
		setDistancia();
	}

	public String getDescricaoLong() {
		return descricaoLong;
	}
	public void setDescricaoLong(String descricaoLong) {
		this.descricaoLong = descricaoLong;
	}

	public String getTipo() {
		return tipo;
	}
	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public String getViagem() {
		return viagem;
	}

	public void setViagem(String viagem) {
		this.viagem = viagem;
	}

	public String getCor() {
		return cor;
	}

	public void setCor(String cor) {
		this.cor = cor;
	}

	public Stop getStopOrigem() {
		return stopOrigem;
	}

	public void setStopOrigem(Stop stopOrigem) {
		this.stopOrigem = stopOrigem;
		setOrigem();
	}

	public Stop getStopDestino() {
		return stopDestino;
	}

	public void setStopDestino(Stop stopDestino) {
		this.stopDestino = stopDestino;
		setDestino();
	}

	public double getDistancia() {
		return distancia;
	}

	private void setDistancia() {
		this.distancia = forma.get(forma.size()-1).getShape_dist_traveled() - forma.get(0).getShape_dist_traveled();
	}

	
	
	
	//	public double getDistAcumOrigem() {
	//	return distAcumOrigem;
	//}
	//private void setDistAcumOrigem() {
	//	this.distAcumOrigem = forma.get(0).getShape_dist_traveled();
	//}
	//
	//public double getDistAcumDestino() {
	//	return distAcumDestino;
	//}
	//private void setDistAcumDestino() {
	//	this.distAcumDestino = forma.get(stops.size() - 1).getShape_dist_traveled();
	//}
	
	//public String getDescricaoStopOrigem() {
	//	return descricaoStopOrigem;
	//}
	//private void setDescricaoStopOrigem() {
	//	this.descricaoStopOrigem = stopOrigem.getStop_desc();
	//}
	//
	//public String getDescricaoStopDestino() {
	//	return descricaoStopDestino;
	//}
	//private void setDescricaoStopDestino() {
	//	this.descricaoStopDestino = stopDestino.getStop_desc();
	//}
	
	//public List<Stop> getStops() {
	//	return stops;
	//}
	//public void setStops(ArrayList<Stop> stops) {
	//	this.stops = stops;
	//	setOrigem();
	//	setDestino();
	//	setDistAcumOrigem();
	//	setDistAcumDestino();
	//	setDistancia()
	//	setDescricaoStopOrigem();
	//	setDescricaoStopDestino();
	//}
	
	
}
